/*
例程97. 四方猜想
整理优化by:千百度QAIU
QQ:736226400
编译环境:gcc/tcc
2017/10/23
*/

#include<stdio.h>
#include <conio.h>
void verify_four_squares(int number)
{
    int i,j,k,l;
    for(i=1;i<number/2;i++)         /*试探法。试探i,j,k,k的不同值*/
	        for(j=0;j<=i;j++)
	            for(k=0;k<=j;k++)
	                for(l=0;l<=k;l++)
	                    if(number==i*i+j*j+k*k+l*l)    /*若满足定理要求则输出结果*/
	                    {
				printf(" >> %d=%d*%d+%d*%d+%d*%d+%d*%d\n",number,i,i,j,j,k,k,l,l);
				return;
	                    }
}
int main()
{
    int number=1;

    clrscr();
    puts("*****************************************************");
    puts("* This program is to verify Theorem of Four Squares.*");
    puts("* That is all natural numbers can be represented as *");
    puts("* sum of no more than 4 squares of the numbers.     *");
    puts("*****************************************************");
    while(number!=0)
    {
	    printf(" >> Please input a number to verify(0 to quit): ");
	    scanf("%d",&number);      /*输入任一整数*/
	    if(number==0)
		break;
	    printf(" >> ------ Results of verification: ------------\n");
	    verify_four_squares(number);
	    printf(" >> ---------------------------------------------\n");
    }
    puts("\n Press any key to quit...");
    getch();
    return 0;
}